From: Cosimo Cecchi Date: Sun, 16 Feb 2014 03:45:28 +0000 (-0800) Subject: altTab: don't override icon size request X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2779 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ad97fc6855a7bf66c7509a41e8f576d58486889f;p=gnome-shell.git altTab: don't override icon size request Instead of overriding the actor's request with the icon size, just set the new icon size on the actors, and let the default handler take the preferred size of children. https://bugzilla.gnome.org/show_bug.cgi?id=705410 --- diff --git a/js/ui/altTab.js b/js/ui/altTab.js index adfb02d92..9b6c7044c 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -430,7 +430,6 @@ const AppIcon = new Lang.Class({ set_size: function(size) { this.icon = this.app.create_icon_texture(size); - this._iconBin.set_size(size, size); this._iconBin.child = this.icon; } }); @@ -479,12 +478,13 @@ const AppSwitcher = new Lang.Class({ Mainloop.source_remove(this._mouseTimeOutId); }, - _getPreferredHeight: function (actor, forWidth, alloc) { + _setIconSize: function() { let j = 0; while(this._items.length > 1 && this._items[j].style_class != 'item-box') { j++; } let themeNode = this._items[j].get_theme_node(); + let iconPadding = themeNode.get_horizontal_padding(); let iconBorder = themeNode.get_border_width(St.Side.LEFT) + themeNode.get_border_width(St.Side.RIGHT); let [iconMinHeight, iconNaturalHeight] = this.icons[j].label.get_preferred_height(-1); @@ -495,19 +495,17 @@ const AppSwitcher = new Lang.Class({ let primary = Main.layoutManager.primaryMonitor; let parentPadding = this.actor.get_parent().get_theme_node().get_horizontal_padding(); let availWidth = primary.width - parentPadding - this.actor.get_theme_node().get_horizontal_padding(); - let height = 0; - for(let i = 0; i < iconSizes.length; i++) { + if (this._items.length == 1) { + this._iconSize = iconSizes[0]; + } else { + for(let i = 0; i < iconSizes.length; i++) { this._iconSize = iconSizes[i]; - height = iconSizes[i] + iconSpacing; + let height = iconSizes[i] + iconSpacing; let w = height * this._items.length + totalSpacing; if (w <= availWidth) - break; - } - - if (this._items.length == 1) { - this._iconSize = iconSizes[0]; - height = iconSizes[0] + iconSpacing; + break; + } } for(let i = 0; i < this.icons.length; i++) { @@ -515,9 +513,11 @@ const AppSwitcher = new Lang.Class({ break; this.icons[i].set_size(this._iconSize); } + }, - alloc.min_size = height; - alloc.natural_size = height; + _getPreferredHeight: function (actor, forWidth, alloc) { + this._setIconSize(); + this.parent(actor, forWidth, alloc); }, _allocate: function (actor, box, flags) {